home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-09-02 | 56.1 KB | 2,716 lines | [TEXT/NISI] |
- ONLY MAC
- ALSO ASSEMBLER
- ALSO FORTH DEFINITIONS
-
- HEADER new.CODE11.start
-
- CODE an.RTS \ $005647FC
- RTS
- END-CODE
-
- CODE my.FILEID \ $005647FE
- LEA $3C(A4),A0 \ Ref: FILEID
- MOVE.L A0,-(A6)
- RTS
- END-CODE
-
- CODE my.WDRefNum \ $00564806
- LEA $3E(A4),A0
- MOVE.L A0,-(A6)
- RTS
- END-CODE
-
- CODE my.CONTEXT \ $0056480E
- LEA $40(A4),A0 \ Ref: CONTEXT
- MOVE.L A0,-(A6)
- RTS
- END-CODE
-
- CODE my.TWPtr \ $00564816
- LEA $48(A4),A0 \ Ref: TaskWindowPointer
- MOVE.L A0,-(A6)
- RTS
- END-CODE
-
- CODE VP_$28 \ $0056481E
- LEA $-55A(A5),A0 \ Ref: VP
- MOVEQ.L #$28,D0
- ADD.L D0,A0
- MOVE.L A0,-(A6)
- RTS
- END-CODE
-
- CODE CR.ABORT \ $0056482A
- JSR $3C2(A5) \ CR
- JSR $26A(A5) \ ABORT
- RTS
- END-CODE
-
- CODE word1 \ $00564834
- MOVE.L (A6)+,D1
- MOVEQ.L #$9,D0 \ $9
- CMP.L D0,D1
- BLE.S @a \ +$A $564850
-
- ADDQ.L #$7,D1
-
- @a \ $00564850
- MOVEQ.L #$30,D0
- ADD.L D0,D1
- MOVE.L D1,-(A6)
- RTS
- END-CODE
-
- CODE (ASCII) \ $0056485C
- LINK A2,#$-8
- MOVEQ.L #$20,D0 \ $20
- MOVE.L D0,-(A6)
- JSR $6CA(A5) \ WORD
- JSR $5C2(A5) \ COUNT
- MOVEQ.L #$4,D0 \ $4
- MOVE.L D0,-(A6)
- JSR $342(A5) \ MIN
- MOVE.L (A6)+,$-8(A2)
- MOVE.L (A6)+,$-4(A2)
- MOVEA.L $-4(A2),A0
- MOVEQ.L #$0,D0
- MOVE.B (A0),D0
- MOVE.L D0,-(A6)
- MOVEQ.L #$0,D0
- TST.L $-8(A2)
- BLE.S @a \ +$4 $564892
-
- MOVEQ.L #$-1,D0
-
- @a \ 00564892
- AND.L (A6)+,D0
- BEQ.S @b \ +$4E $5648E4
-
- MOVEQ.L #$0,D0 \ $0
- MOVE.L D0,-(A6)
- MOVE.L $-4(A2),-(A6)
- MOVE.L $-8(A2),D0
- ADD.L D0,(A6)
- MOVE.L $-4(A2),-(A6)
- MOVE.L D5,(A3)+ \ DO
- MOVE.L D6,(A3)+
- MOVE.L (A6)+,D6
- MOVE.L (A6)+,D5
-
- @c \ 005648B4
- MOVEQ.L #$8,D0 \ $8
- MOVE.L D0,-(A6)
- JSR $49A(A5) \ SHIFT
- MOVEA.L D6,A0
- MOVEQ.L #$0,D0
- MOVE.B (A0),D0
- OR.L D0,(A6)
- ADDQ.L #$1,D6
- CMP.L D6,D5
- BGT.S @c \ +$-14 $5648B4
-
- MOVE.L -(A3),D6
- MOVE.L -(A3),D5
- TST.L $-58E(A5) \ Ref: STATE
- BEQ.S @d \ +$8 $5648E0
-
- JSR $D1A(A5) \ LITERAL
-
- @d \ 005648E0
- BRA.S @e \ +$28 $564908
-
- @b \ 005648E4
- BSR.S @f \ +$1A
- DC.B $16
- DC.B 'Illegal ASCII argument'
- .ALIGN
-
- @f \ 005648FE
- MOVE.L (A7)+,-(A6)
- JSR $EA(A5) \
- JSR CR.ABORT \ $-DC(PC) $56482A
-
- @e \ 00564908
- UNLK A2
- RTS
- END-CODE
-
- CODE word2 \ $0056490C
- LINK A2,#$-10
- MOVE.L (A6)+,$-8(A2)
- MOVE.L (A6)+,$-4(A2)
- MOVEQ.L #$0,D0
- MOVE.L D0,$-10(A2)
- MOVE.L $-4(A2),-(A6)
- MOVEQ.L #$54,D0 \ $54
- MOVE.L D0,-(A6)
- MOVEQ.L #$20,D0 \ $20
- MOVE.L D0,-(A6)
- JSR $46A(A5) \ FILL
- JSR $3C2(A5) \ CR
- MOVEQ.L #$B,D0
- MOVE.L D0,$-10(A2)
- MOVE.L $-8(A2),D1
- MOVEQ.L #$E,D0
- AND.L D0,D1
- MOVE.L D1,$-C(A2)
- MOVEQ.L #$10,D0 \ $10
- MOVE.L D0,-(A6)
- MOVEQ.L #$0,D0 \ $0
- MOVE.L D0,-(A6)
- MOVE.L D5,(A3)+ \ DO
- MOVE.L D6,(A3)+
- MOVE.L (A6)+,D6
- MOVE.L (A6)+,D5
-
- @b \ 00564954
- MOVE.L $-C(A2),-(A6)
- MOVE.L D6,D0
- ADD.L D0,(A6)
- MOVEQ.L #$F,D0
- AND.L D0,(A6)
- JSR word1 \ $-12E(PC) $564834
- MOVE.L $-4(A2),A0
- MOVE.L $-10(A2),D0
- ADD.L D0,A0
- MOVE.L (A6)+,D0 \ C!
- MOVE.B D0,(A0)
- MOVEQ.L #$2,D0
- ADD.L D0,$-10(A2)
- MOVE.L $-C(A2),-(A6)
- MOVE.L D6,-(A6) \ I
- ADDQ.L #$1,(A6) \ 1+
- MOVE.L (A6)+,D0 \ +
- ADD.L D0,(A6)
- MOVEQ.L #$F,D0
- AND.L D0,(A6)
- JSR word1 \ $-158(PC) $564834
- MOVE.L $-4(A2),A0
- MOVE.L $-10(A2),D0
- ADD.L D0,A0
- MOVE.L (A6)+,D0 \ C!
- MOVE.B D0,(A0)
- MOVEQ.L #$4,D0
- ADD.L D0,$-10(A2)
- MOVEQ.L #$2,D0
- MOVE.L D0,D0
- BLT.S @a \ +$C $5649B4
-
- ADD.L D0,D6
- CMP.L D5,D6
- BLT.S @b \ +$-5A $564954
-
- BRA.S @c \ +$A $5649BC
-
- @a \ 005649B4
- ADD.L D0,D6
- CMP.L D6,D5
- BLE.S @b \ +$-64 $564954
-
- @c \ 005649BC
- MOVE.L -(A3),D6
- MOVE.L -(A3),D5
- MOVEQ.L #$10,D0 \ $10
- MOVE.L D0,-(A6)
- MOVEQ.L #$0,D0 \ $0
- MOVE.L D0,-(A6)
- MOVE.L D5,(A3)+ \ DO
- MOVE.L D6,(A3)+
- MOVE.L (A6)+,D6
- MOVE.L (A6)+,D5
-
- @d \ 005649D0
- MOVE.L $-C(A2),-(A6)
- MOVE.L D6,D0
- ADD.L D0,(A6)
- MOVEQ.L #$F,D0
- AND.L D0,(A6)
- JSR word1 \ $-1AA(PC) $564834
- MOVE.L $-4(A2),A0
- MOVE.L $-10(A2),D0
- ADD.L D0,A0 \ C!
- MOVE.L (A6)+,D0
- MOVE.B D0,(A0)
- MOVEQ.L #$1,D0
- ADD.L D0,$-10(A2)
- ADDQ.L #$1,D6
- CMP.L D6,D5
- BGT.S @d \ +$-2A $5649D0
-
- MOVE.L -(A3),D6
- MOVE.L -(A3),D5
- MOVE.L $-4(A2),-(A6)
- MOVE.L $-10(A2),-(A6)
- JSR $15A(A5) \ TYPE
- UNLK A2
- RTS
- END-CODE
-
- CODE (DUMP) \ $00564A12
- LINK A2,#$-64
- MOVE.L (A6)+,$-8(A2)
- MOVE.L (A6)+,$-4(A2)
- LEA $24(A4),A0 \ Ref: BASE
- MOVE.L (A0),$-C(A2)
- JSR $502(A5) \ HEX
- LEA $-64(A2),A0
- MOVE.L A0,-(A6)
- MOVE.L $-4(A2),-(A6)
- JSR word2 \ $-12A(PC) $56490C
- MOVE.L $-4(A2),D1 \ make the address even
- MOVEQ.L #$-2,D0
- AND.L D0,D1
- MOVE.L D1,$-4(A2)
- MOVE.L $-8(A2),D0 \ put byte count in d0
- ADD.L D0,D1 \ d1 holds ending addr
- MOVE.L D1,-(A6) \ end addr
- MOVE.L $-4(A2),-(A6) \ start addr
- MOVE.L D5,(A3)+ \ DO
- MOVE.L D6,(A3)+
- MOVE.L (A6)+,D6
- MOVE.L (A6)+,D5
-
- @n \ 00564A5A
- JSR $3C2(A5) \ CR
- MOVE.L $-4(A2),-(A6) \ start addr
- JSR $10A(A5) \ <#
- MOVEQ.L #$20,D0 \ $20
- MOVE.L D0,-(A6)
- JSR $58A(A5) \ HOLD
- MOVEQ.L #$20,D0 \ $20
- MOVE.L D0,-(A6)
- JSR $58A(A5) \ HOLD
- MOVEQ.L #$3A,D0 \ $3A
- MOVE.L D0,-(A6)
- JSR $58A(A5) \ HOLD
- JSR $45A(A5) \ #
- JSR $45A(A5) \ #
- JSR $45A(A5) \ #
- JSR $45A(A5) \ #
- JSR $45A(A5) \ #
- JSR $45A(A5) \ #
- JSR $45A(A5) \ #
- JSR $45A(A5) \ #
- JSR $57A(A5) \ #>
- JSR $15A(A5) \ TYPE
- MOVEQ.L #$10,D0 \ $10
- MOVE.L D0,-(A6)
- MOVEQ.L #$0,D0 \ $0
- MOVE.L D0,-(A6)
- MOVE.L D5,(A3)+ \ DO
- MOVE.L D6,(A3)+
- MOVE.L (A6)+,D6
- MOVE.L (A6)+,D5
-
- @b \
- MOVE.L $-4(A2),A0 \ start addr
- MOVEQ.L #$0,D0
- MOVE.W (A0,D6.L),D0 \ get first word
- MOVE.L D0,-(A6)
- JSR $10A(A5) \ <#
- MOVEQ.L #$20,D0 \ $20
- MOVE.L D0,-(A6)
- JSR $58A(A5) \ HOLD
- MOVEQ.L #$20,D0 \ $20
- MOVE.L D0,-(A6)
- JSR $58A(A5) \ HOLD
- JSR $45A(A5) \ #
- JSR $45A(A5) \ #
- JSR $45A(A5) \ #
- JSR $45A(A5) \ #
- JSR $57A(A5) \ #>
- JSR $15A(A5) \ TYPE
- MOVEQ.L #$2,D0
- ADD.L D0,D6
- CMP.L D6,D5
- BGT.S @b \
-
- @c \ $00564B0A
- MOVE.L -(A3),D6
- MOVE.L -(A3),D5
- MOVEQ.L #$10,D0 \ $10
- MOVE.L D0,-(A6)
- MOVEQ.L #$0,D0 \ $0
- MOVE.L D0,-(A6)
- MOVE.L D5,(A3)+ \ DO
- MOVE.L D6,(A3)+
- MOVE.L (A6)+,D6
- MOVE.L (A6)+,D5
-
- @h \ $00564B1E
- MOVE.L $-4(A2),A0
- MOVEQ.L #$0,D0
- MOVE.B (A0,D6.L),D0
- MOVE.L D0,$-10(A2)
- MOVE.L D0,D2
- MOVEQ.L #$21,D1 \ $21
- MOVEQ.L #$0,D0
- CMP.L D1,D2
- BGE.S @d \ +$4 $564B40
-
- MOVEQ.L #$-1,D0 \ $-1
-
- @d
- MOVE.L D0,-(A6)
- MOVE.L $-10(A2),D2
- MOVEQ.L #$7F,D1 \ $7F
- MOVEQ.L #$0,D0
- CMP.L D1,D2
- BNE.S @e \ +$4 $564B52
-
- MOVEQ.L #$-1,D0 \ $-1
-
- @e
- MOVE.L D0,-(A6)
- MOVE.L $-10(A2),D2
- MOVE.L #$D8,D1 \ $D8
- MOVEQ.L #$0,D0
- CMP.L D1,D2
- BLE.S @f \ +$4 $564B68
-
- MOVEQ.L #$-1,D0
-
- @f \ $00564B68
- OR.L (A6)+,D0
- OR.L (A6)+,D0 \ OR
- BEQ.S @g \ +$A $564B7A
-
- MOVEQ.L #$2E,D0
- MOVE.L D0,$-10(A2)
-
- @g
- MOVE.L $-10(A2),D0
- LEA $-64(A2),A0
- MOVE.B D0,(A0,D6.L)
- ADDQ.L #$1,D6
- CMP.L D6,D5
- BGT.S @h \ +$-74 $564B1E
-
- MOVE.L -(A3),D6
- MOVE.L -(A3),D5
- LEA $-64(A2),A0
- MOVE.L A0,-(A6)
- MOVEQ.L #$10,D0 \ $10
- MOVE.L D0,-(A6)
- JSR $15A(A5) \ TYPE
- MOVEQ.L #$10,D0
- ADD.L D0,$-4(A2)
- JSR $272(A5) \ ?TERMINAL
- TST.L (A6)+ \ IF
- BEQ.S @i \ +$4A $564BFE
-
- JSR $1D2(A5) \ KEY
- ADDQ.L #$4,A6 \ DROP
-
- @j \ $00564BBE
- JSR $272(A5) \ ?TERMINAL
- MOVE.L (A6)+,$-10(A2)
- BEQ.S @j \ +$-A $564BBE
-
- JSR $1D2(A5) \ KEY
- MOVEQ.L #$20,D0 \ $20
- MOVE.L D0,-(A6)
- CMPM.L (A6)+,(A6)+
- BEQ.S @k \ +$8 $564BDE
-
- BRA.S @l \ +$3C $564C16
-
- @k \ $00564BDE
- MOVE.L $-10(A2),D1
- MOVE.L #$2000000,D0
- AND.L D1,D0
- BEQ.S @i \ +$12 $564BFE
-
- LEA $-64(A2),A0
- MOVE.L A0,-(A6)
- MOVE.L $-4(A2),-(A6)
- JSR word2 \ $-2F0(PC) $56490C
-
- @i \ $00564BFE
- MOVEQ.L #$10,D0
- ADD.L D0,D6
- CMP.L D6,D5
- BGT @n \ +$-1B8 $564A5A
-
- @l
- MOVE.L -(A3),D6
- MOVE.L -(A3),D5
- JSR $3C2(A5) \ CR
- MOVE.L $-C(A2),D0
- LEA $24(A4),A0 \ Ref: BASE
- MOVE.L D0,(A0)
- UNLK A2
- RTS
- END-CODE
-
- CODE (.S) \ $00564C2C
- JSR $3C2(A5) \ CR
- JSR $352(A5) \ DEPTH
- TST.L (A6)+ \ IF
- BEQ.S @a \ +$5A $564C90
-
- MOVEQ.L #$1,D0 \ $1
- MOVE.L D0,-(A6)
- JSR $352(A5) \ DEPTH
- SUBQ.L #$1,(A6) \ 1-
- MOVE.L D5,(A3)+ \ DO
- MOVE.L D6,(A3)+
- MOVE.L (A6)+,D6
- MOVE.L (A6)+,D5
-
- @c \ $00564C4C
- MOVE.L D6,D0 \ I
- SUBQ.L #$1,D0 \ 1-
- ASL.L #$2,D0
- MOVE.L (A6,D0.L),-(A6)
- JSR $50A(A5) \ .
- MOVEQ.L #$-1,D0
- ADD.L D0,D6
- CMP.L D6,D5
- BLE.S @c \ +$-24 $564C4C
-
- @d \ $00564C74
- MOVE.L -(A3),D6
- MOVE.L -(A3),D5
- BSR.S @e \ +$A
- DC.B $6
- DC.B '<- Top'
- .ALIGN
-
- @e \ $00564C82
- MOVE.L (A7)+,-(A6)
- JSR $EA(A5) \
- JSR $3C2(A5) \ CR
- BRA.S @g \ +$12 $564C9E
-
- @a \ $00564C90
- BSR.S @f \ +$8
- DC.B $5
- DC.B 'Empty'
- .ALIGN
-
- @f \ $00564C98
- MOVE.L (A7)+,-(A6)
- JSR $EA(A5) \
- @g
- RTS
- END-CODE
-
- CODE Word3 \ $00564CA0
- \ this word looks at the pen location relative to the end of the window
- \ and decides whether to hit a carriage return and scroll a line.
- LINK A2,#$-4
- TST.L $48(A4) \ Ref: TaskWindowPointer
- BEQ.S @a \ +$70 $564D1C
-
- JSR $302(A5) \ #OUT
- MOVE.L (A6)+,D1
- MOVEQ.L #$F,D0
- AND.L D0,D1
- MOVE.L D1,$-4(A2)
- MOVEQ.L #$F,D0 \ $F
- CMP.L D0,D1
- BNE.S @b \ +$A $564CD0
-
- MOVEQ.L #$1,D0
- ADD.L D0,$-4(A2)
-
- @b \ $00564CD0
- MOVE.L $-4(A2),D1
- MOVEQ.L #$-10,D0
- AND.L D0,D1
- MOVEQ.L #$10,D0
- ADD.L D0,D1
- MOVE.L D1,$-4(A2)
- JSR $302(A5) \ #OUT
- MOVE.L (A6)+,D0
- MOVEQ.L #$-10,D1
- AND.L D1,D0
- ADD.L D0,$-4(A2)
- MOVE.L $-4(A2),-(A6)
- JSR $E2(A5) \ #COLS
- MOVEQ.L #$10,D0
- SUB.L D0,(A6)
- CMPM.L (A6)+,(A6)+
- BLE.S @c \ +$C $564D08
-
- JSR $3C2(A5) \ CR
- BRA.S @e \ +$14 $564D18
-
- @c \ $00564D08
- MOVE.L $-4(A2),-(A6)
- JSR $302(A5) \ #OUT
- MOVE.L (A6)+,D0 \ -
- SUB.L D0,(A6)
- JSR $1E2(A5) \ SPACES
-
- @d \ $00564D18
- BRA.S @e \ +$8 $564D20
-
- @a \ $00564D1C
- JSR $3C2(A5) \ CR
-
- @e
- UNLK A2
- RTS
- END-CODE
-
- CODE (WORDS) \ $00564D24
- LINK A2,#$-1C
- JSR $3C2(A5) \ CR
- MOVEQ.L #$0,D0
- MOVE.L D0,$-1C(A2)
- LEA $40(A4),A0 \ Ref: CONTEXT
- MOVE.L (A0),$-4(A2)
- JSR VP_$28 \ $-51E(PC) $56481E
- MOVEA.L (A6)+,A0
- MOVE.L (A0),$-8(A2)
- MOVEQ.L #$1,D0 \ $1
- MOVE.L D0,-(A6)
- MOVEQ.L #$0,D0 \ $0
- MOVE.L D0,-(A6)
- MOVE.L D5,(A3)+ \ DO
- MOVE.L D6,(A3)+
- MOVE.L (A6)+,D6
- MOVE.L (A6)+,D5
-
- @l \ $00564D54
- MOVE.L $-8(A2),-(A6)
- MOVEQ.L #$32,D0
- ADD.L D0,(A6)
- MOVE.L $-4(A2),-(A6)
- MOVEQ.L #$F,D0
- AND.L D0,(A6)
- MOVEQ.L #$8,D0 \ $8
- MOVE.L D0,-(A6)
- JSR $B2(A5) \ *
- MOVE.L (A6)+,D0 \ +
- MOVEA.L (A6)+,A0 \ @
- MOVE.L (A0,D0.L),D1
- MOVE.L $-8(A2),D0
- ADD.L D0,D1
- MOVE.L D1,$-C(A2)
- MOVEQ.L #$0,D0
- MOVE.L D0,$-10(A2)
-
- @f \ $00564D84
- MOVE.L $-10(A2),D0
- NEG.L D0 \ NEGATE
- ADD.L D0,$-C(A2)
- MOVE.L $-C(A2),-(A6)
- ADDQ.L #$4,(A6) \ 4+
- JSR $5C2(A5) \ COUNT
- MOVE.L (A6)+,$-18(A2)
- MOVE.L (A6)+,$-14(A2)
- MOVE.L $-18(A2),D1
- MOVEQ.L #$20,D0
- AND.L D0,D1
- BNE.S @a \ +$20 $564DCC
-
- MOVE.L $-18(A2),D1
- MOVEQ.L #$1F,D0
- AND.L D0,D1
- MOVE.L D1,$-18(A2)
- MOVE.L $-14(A2),-(A6)
- MOVE.L D1,-(A6)
- JSR $15A(A5) \ TYPE
- JSR Word3 \ $-12A(PC) $564CA0
-
- @a \ $00564DCC
- JSR $272(A5) \ ?TERMINAL
- TST.L (A6)+ \ IF
- BEQ.S @b \ +$42 $564E14
-
- JSR $3C2(A5) \ CR
- JSR $1D2(A5) \ KEY
- ADDQ.L #$4,A6 \ DROP
- BSR.S @c \ +$18
- DC.B $15
- DC.B 'Space bar to continue'
- .ALIGN
-
- @c \ $00564DF8
- MOVE.L (A7)+,-(A6)
- JSR $EA(A5) \
- JSR $3C2(A5) \ CR
- JSR $1D2(A5) \ KEY
- MOVEQ.L #$20,D0 \ $20
- MOVE.L (A6)+,D1
- CMP.L D0,D1
- BEQ.S @b \ +$8 $564E14
-
- BRA.S @d \ +$80 $564E90
-
- @b \ $00564E14
- MOVEA.L $-C(A2),A0
- MOVEQ.L #$0,D0
- MOVE.L (A0),$-10(A2)
- BNE.S @e \ +$4 $564E28
-
- MOVEQ.L #$-1,D0 \ $-1
-
- @e \ $00564E28
- TST.L D0 \ IF
- BEQ @f \ +$-A8 $564D84
-
- TST.L $-4(A2) \ IF
- BEQ.S @g \ +$42 $564E78
-
- @j \ $00564E3A
- MOVE.L $-4(A2),-(A6)
- MOVEQ.L #$10,D0 \ $10
- MOVE.L D0,-(A6)
- JSR $AA(A5) \ /
- MOVE.L (A6)+,D1
- MOVE.L D1,$-4(A2)
- MOVEQ.L #$F,D0
- AND.L D0,D1
- MOVEQ.L #$F,D0 \ $F
- CMP.L D0,D1
- BNE.S @h \ +$8 $564E60
-
- BRA.S @d \ +$34 $564E90
-
- @h \ $00564E60
- MOVEQ.L #$0,D0
- TST.L $-4(A2) \ IF
- BNE.S @i \ +$4 $564E6C
-
- MOVEQ.L #$-1,D0 \ $-1
-
- @i \ $00564E6C
- TST.L D0 \ IF
- BEQ.S @j \ +$-36 $564E3A
-
- BRA.S @k \ +$A $564E7E
-
- @g \ $00564E78
- MOVEQ.L #$1,D0
- MOVE.L D0,$-1C(A2)
-
- @k \ $00564E7E
- TST.L $-1C(A2) \ IF
- BEQ @l \ +$-130 $564D54
-
- ADDQ.L #$1,D6
- CMP.L D6,D5
- BGT @l \ +$-138 $564D54
-
- @d \ $00564E90
- MOVE.L -(A3),D6
- MOVE.L -(A3),D5
- JSR $3C2(A5) \ CR
- UNLK A2
- RTS
- END-CODE
-
- CODE word4 \ $00564E9C
- LINK A2,#$-4
- JSR $5CA(A5) \ DISK
- MOVE.L (A6)+,A0
- MOVEQ.L #$4,D0 \ offset to ioResult
- ADD.L D0,A0 \ set address
- MOVEQ.L #$0,D0 \ clear D0
- MOVE.W (A0),D0 \ get ioResult
- EXT.L D0
- MOVE.L D0,$-4(A2)
- BEQ.S @a \ +$2E $564EE8
-
- JSR $3C2(A5) \ CR
- BSR.S @b \ +$10
- DC.B $C
- DC.B 'File Error #'
- .ALIGN
-
- @b \ $00564ED2
- MOVE.L (A7)+,-(A6)
- JSR $EA(A5) \
- MOVE.L $-4(A2),-(A6)
- JSR $50A(A5) \ .
- JSR $3C2(A5) \ CR
- JSR $26A(A5) \ ABORT
-
- @a \ $00564EE8
- UNLK A2
- RTS
- END-CODE
-
- CODE word5 \ $00564EEC
- JSR $C62(A5) \ OPERATOR
- MOVEA.L (A6)+,A0 \ @
- MOVE.L (A0),-(A6)
- LEA $-2(A4),A0 \ Ref: STATUS
- MOVE.L A0,-(A6)
- CMPM.L (A6)+,(A6)+
- BEQ.S @a \ +$32 $564F2E
-
- JSR $3C2(A5) \ CR
- BSR.S @b \ +$20
- DC.B $1D
- DC.B 'Only allowed in Operator Task'
- .ALIGN
-
- @b \ $00564F24
- MOVE.L (A7)+,-(A6)
- JSR $EA(A5) \
- JSR $26A(A5) \ ABORT
-
- @a \ $00564F2E
- RTS
- END-CODE
-
- CODE word6 \ $00564F30
- LINK A2,#$-14
- MOVE.L (A6)+,$-4(A2)
- JSR word5 \ $-4E(PC) $564EEC
- LEA $3C(A4),A0 \ Ref: FILEID
- MOVEQ.L #$0,D0
- MOVE.W (A0),D0
- MOVE.L D0,$-C(A2) \ save current ioRefNum
- MOVEQ.L #$1,D0 \ $1
- MOVE.L D0,-(A6)
- MOVE.L $-4(A2),-(A6)
- LEA $3E(A4),A0
- MOVEQ.L #$0,D0
- MOVE.W (A0),D0
- MOVE.L D0,-(A6)
- JSR $5FA(A5) \ OPENFILE
- MOVE.L (A6)+,$-14(A2) \ save new ioRefNum
- JSR word4 \ $-C8(PC) $564E9C
- LEA $-148(A5),A0
- ADDQ.L #$2,A0 \ 2+
- MOVE.L A0,$-8(A2)
- MOVEQ.L #$0,D0
- MOVE.L D0,$-10(A2)
-
- @c \ $00564F78
- MOVEA.L $-8(A2),A0
- MOVEQ.L #$0,D0
- MOVE.W (A0),D0
- MOVE.L D0,-(A6)
- MOVE.L $-10(A2),D2
- MOVEQ.L #$20,D1 \ $20
- MOVEQ.L #$0,D0
- CMP.L D1,D2
- BGE.S @a \ +$4 $564F92
-
- MOVEQ.L #$-1,D0
-
- @a \ $00564F92
- AND.L (A6)+,D0
- BEQ.S @b \ +$14 $564FAA
-
- MOVEQ.L #$1,D0
- ADD.L D0,$-10(A2)
- MOVEQ.L #$2,D0
- ADD.L D0,$-8(A2)
- BRA.S @c \ +$-2E $564F78
-
- @b \ $00564FAA
- MOVE.L $-10(A2),D2
- MOVEQ.L #$20,D1 \ $20
- CMP.L D1,D2
- BNE.S @d \ +$20 $564FD4
-
- BSR.S @e \ +$16
- DC.B $13
- DC.B 'Too many files open'
- .ALIGN
-
- @e \ $00564FCE
- MOVE.L (A7)+,-(A6)
- JSR $212(A5) \
-
- @d \ $00564FD4
- MOVE.L $-14(A2),D0
- MOVEA.L $-8(A2),A0
- MOVE.W D0,(A0)
- LEA $3C(A4),A0 \ Ref: FILEID
- MOVE.W D0,(A0)
- MOVEQ.L #$-1,D0 \ $-1
- MOVE.L D0,-(A6)
- JSR $CCA(A5) \ LOAD
- MOVE.L $-14(A2),-(A6)
- JSR $602(A5) \ CLOSEFILE
- JSR $69A(A5) \ FLUSH
- JSR word4 \ $-166(PC) $564E9C
- MOVEQ.L #$0,D0 \ $0
- MOVEA.L $-8(A2),A0
- MOVE.W D0,(A0)
- MOVE.L $-C(A2),D0
- LEA $3C(A4),A0 \ Ref: FILEID
- MOVE.W D0,(A0)
- UNLK A2
- RTS
- END-CODE
-
- CODE get.TEXT2 \ $00565038
- EXG D4,A7
- CLR.L -(A7)
- MOVE.L #$54455854,-(A7) \ 'TEXT'
- MOVE.W #$2,-(A7)
- _GetResource \ Trap #$A9A0
- MOVE.L (A7)+,-(A6)
- EXG D4,A7
- RTS
- END-CODE
-
- CODE detach.lock \ $0056504E
- EXG D4,A7
- MOVE.L (A6),-(A7)
- _DetachResource \ Trap #$A992
- MOVEA.L (A6)+,A0
- _HLock \ Trap #$A029
- EXT.L D0
- MOVE.L D0,-(A6)
- EXG D4,A7
- RTS
- END-CODE
-
- CODE load.TEXT2 \ $00565060
- LINK A2,#$-4
- LEA $-B62(A5),A0
- MOVE.L (A0),$-4(A2)
- TST.L $-4(A2) \ IF
- BNE.S @a \ +$34 $5650A6
-
- JSR get.TEXT2 \ $-40(PC) $565038
- MOVE.L (A6)+,$-4(A2)
- BEQ.S @a \ +$22 $5650A6
-
- MOVE.L $-4(A2),-(A6)
- JSR detach.lock \ $-40(PC) $56504E
- ADDQ.L #$4,A6 \ DROP
- MOVEA.L $-4(A2),A0
- MOVE.L (A0),D0
- EXG D4,A7
- _StripAddress \ Trap #$A055
- EXG D4,A7
- LEA $-B62(A5),A0
- MOVE.L D0,(A0)
-
- @a \ $005650A6
- MOVE.L $-4(A2),-(A6)
- UNLK A2
- RTS
- END-CODE
-
- CODE TEXT2.entry \ $005650AE
- LINK A2,#$-4
- MOVE.L (A6)+,$-4(A2)
- BSR.S load.TEXT2 \ $-58(PC) $565060
- TST.L (A6)+ \ IF
- BNE.S @a \ +$2A $5650E6
-
- BSR.S @b \ +$1C
- DC.B $18
- DC.B 'Text resource #2 missing'
- .ALIGN
-
- @b \ $005650DC
- MOVE.L (A7)+,-(A6)
- JSR $EA(A5) \
- JSR $26A(A5) \ ABORT
-
- @a \ $005650E6
- LEA $-B62(A5),A0
- MOVE.L (A0),-(A6)
- MOVE.L $-4(A2),D0
- ADD.L D0,(A6)
- UNLK A2
- RTS
- END-CODE
-
- CODE get.Trap.entry \ $005650F6
- LINK A2,#$-18
- MOVE.L A1,-(A7) \ save A1
- MOVE.L (A6)+,$-10(A2) \ hash.code
- MOVE.L (A6)+,$-C(A2) \ 10th.ltr
- MOVE.L (A6)+,$-8(A2) \ 1st.ltr
- MOVE.L (A6)+,$-4(A2) \ @str
- MOVEQ.L #$0,D0 \ $0
- MOVE.L D0,-(A6)
- BSR.S TEXT2.entry \ $-62(PC) $5650AE
- MOVE.L (A6)+,A1 \ @record
- MOVE.L #$25252525,D3 \ end-of-trapdata constant
-
- @d \ $00565116
- MOVEQ.L #$0,D1
- MOVE.W (A1),D1 \ get hash code from trap record
- MOVE.L $-10(A2),D2 \ get passed-in hash.code
- MOVEQ.L #$0,D0
- CMP.W D1,D2 \ are they equal
- BEQ.S @a \ +$4 $56512C
-
- MOVEQ.L #$-1,D0 \ $-1 set true if non-equal
-
- @a \ $0056512C
- MOVE.L D0,-(A6) \ push flag
- MOVE.L (A1),D1 \ pull out longword from @record
- MOVEQ.L #$0,D0
- CMP.L D1,D3 \ are we at the end marker
- BEQ.S @b \ +$4 $565144 - branch if so
-
- MOVEQ.L #$-1,D0 \ TRUE
-
- @b \ $00565144
- AND.L (A6)+,D0 \ will be 0 if we are at the correct word
- BEQ.S @c \ +$E $565156 we found it
-
- MOVEQ.L #$1A,D0 \ go get the next record
- ADD.L D0,A1
- BRA.S @d \ +$-3C $565116
-
- @c \ $00565156
- \ we tentatively have the correct word
- \ _Debugger
- MOVEQ.L #$0,D1 \ get @record
- MOVE.B 2(A1),D1 \ get first letter of Trapname
- MOVE.L $-8(A2),D2 \ compare with passed in value
- MOVEQ.L #$0,D0
- CMP.W D1,D2
- BNE.S @e \ +$4 $565172 - set FALSE if not equal
-
- MOVEQ.L #$-1,D0 \ $-1
-
- @e \ $00565172
- MOVE.L D0,-(A6) \ push flag
- MOVEQ.L #0,D1
- MOVE.B $15(A1),D1 \ get the 10th trap letter
- MOVEQ.L #$60,D2
- CMP.B D2,D1
- BLE.S @f \ +$C $56519C
-
- MOVE.W #$DF,D0
- AND.W D0,D1
-
- @f \ $0056519C
- MOVE.L $-C(A2),D2 ( -- flag tenth.ltr 10th.ltr )
- MOVEQ.L #$0,D0
- CMP.B D1,D2
- BNE.S @g \ +$4 $5651A8 - FALSE if not equal
-
- MOVEQ.L #$-1,D0
-
- @g \ $005651A8
- AND.L D0,(A6) \ will be TRUE if both 1st and 10th chars equal
- MOVE.L (A1),D1 \ get longword
- MOVEQ.L #$0,D0
- CMP.L D1,D3 \ are we at the end
- BNE.S @h \ +$4 $5651C0
-
- MOVEQ.L #$-1,D0 \ set true if at end
-
- @h \ $005651C0
- OR.L (A6)+,D0 \ will be TRUE if equal and not at end
- BNE.S @i \ +$E $5651D2 - branch if TRUE
-
- MOVEQ.L #$1A,D0 \ get next record
- ADD.L D0,A1
- BRA @d \ +$-B8 $565116
-
- @i \ $005651D2
- \ we should have found a good trap definition
- MOVE.L (A1),D1 \ get longword
- CMP.L D1,D3 \ are we at the end
- BNE.S @j \ +$3C $56521E - branch if not
-
- BSR.S @k \ +$1E
- DC.B $1A
- DC.B 'Unknown Toolbox routine : '
- .ALIGN
-
- @k \ $00565204
- MOVE.L (A7)+,-(A6)
- JSR $EA(A5) \ print it out
- MOVE.L $-4(A2),-(A6)
- JSR $5C2(A5) \ COUNT
- JSR $15A(A5) \ TYPE
- JSR $3C2(A5) \ CR
- JSR $26A(A5) \ ABORT
-
- @j \ $0056521E
- \ now we have found a good ToolBox routine
- MOVE.L A1,$-14(A2)
- MOVEQ.L #$0,D0
- MOVE.W $A(A1),D0 \ get trap word
- MOVE.W #$0FFF,D1 \ mask out high nybble
- AND.W D1,D0
- MOVE.W #$A000,D1 \ now set the upper nybble
- OR.W D1,D0
- MOVE.L D0,-(A6) \ ( -- trap# )
-
- MOVEQ.L #$0,D0 \ offset to byte56
- MOVE.W 4(A1),D0
- MOVE.L D0,-(A6) \ ( -- trap# byte56 )
-
- MOVEQ.L #$0,D0
- MOVE.B 3(A1),D0
- MOVE.L D0,-(A6) \ ( -- trap# byte56 byte4 )
-
- MOVE.L 6(A1),D0
- MOVE.L D0,-(A6) \ ( -- trap# byte56 byte4 byte7.L )
-
- MOVEQ.L #$0,D0
- MOVE.B $A(A1),D0 \ get high byte of trapword
- ANDI.B #$F0,D0 \ get flags of trapword
- MOVE.L D0,-(A6) \ ( -- trap# byte56 byte4 byte7.L hi.nyb )
- MOVE.L (A7)+,A1
- UNLK A2
- RTS
- END-CODE
-
- CODE compile.opcode \ $005652A4
- MOVE.L (A6)+,D1
- TST.L $-58E(A5) \ STATE IF
- BEQ.S @a \ +$10 $5652C4
-
- MOVE.L D1,-(A6)
- JSR $B22(A5) \ W,
- BRA.S @b \ +$1E $5652DE
-
- @a \ $005652C4
- LEA $-B5E(A5),A0
- MOVEA.L (A0),A0
- MOVE.W D1,(A0)
- MOVEQ.L #$2,D0 \ $2
- LEA $-B5E(A5),A0
- ADD.L D0,(A0)
-
- @b \ $005652DE
- RTS
- END-CODE
-
- CODE build.OSTrap \ $005652E2
- \ bit 15 of trap record byte56 is clear, so this is an OSTrap call
- \
- LINK A2,#$-C
- MOVE.L (A6)+,$-C(A2) \ byte4 of trap record
- MOVE.L (A6)+,$-8(A2) \ byte56 of trap record
- MOVE.L (A6)+,$-4(A2) \ trap#
-
- MOVE.L $-8(A2),D1 \ get b56
- MOVE.L #$80,D0 \ is bit 7 set
- AND.L D0,D1
- BEQ.S @a \ +$42 $565342- branch if bit 7 is clear
-
- \ put a word or longword into A1
- MOVE.L $-8(A2),D1 \ byte56 of trap record
- MOVEQ.L #$40,D0 \ is bit 6 set
- AND.L D0,D1
- BEQ.S @b \ +$14 $565322
-
- \ take a longword off the stack and put in A1
- \ bit 6 is set
- MOVE.W #$225E,D0 \ $225E - MOVE.L (A6)+,A1
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-78(PC) $5652A4
- BRA.S @a \ +$24 $565342
-
- @b \ $00565322
- \
- \ take a longword off the stack and store a word into A1
- MOVE.W #$326E,D0 \ $326E - MOVE.L 2(A6),A1
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-88(PC) $5652A4
- MOVEQ.L #$2,D0 \ $2
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-90(PC) $5652A4
- MOVE.W #$588E,D0 \ $588E - ADDQ.L #4,A6
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-9C(PC) $5652A4
-
- @a \ $00565342
- \ test to see if we need to load D0
- MOVE.L $-8(A2),D1
- MOVE.L #$200,D0 \ bit 9 is set if D0 needs to be loaded
- AND.L D0,D1
- BEQ.S @c \ +$46 $565396
-
- \ bit 9 is set, now test for word or longword
- MOVE.L $-8(A2),D1
- MOVE.L #$100,D0 \ bit 8 is set if we load a longword
- AND.L D0,D1
- BEQ.S @d \ +$14 $565376
-
- \ load a longword from the stack into D0
- MOVE.W #$201E,D0 \ $201E - MOVE.L (A6)+,D0
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-CC(PC) $5652A4
- BRA.S @c \ +$24 $565396
-
- @d \ $00565376
- \ load a word into D0 from a longword on the stack
- MOVE.W #$302E,D0 \ $302E - MOVE.W 2(A6),D0
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-DC(PC) $5652A4
- MOVEQ.L #$2,D0 \ $2
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-E4(PC) $5652A4
- MOVE.W #$588E,D0 \ $588E - ADDQ.L #4,A6
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-F0(PC) $5652A4
-
- @c \ $00565396
- \ test to see if we need to load A0
- MOVE.L $-8(A2),D1
- MOVE.L #$800,D0 \ bit 11 is set if we need to load A0
- AND.L D0,D1
- BEQ.S @e \ +$46 $5653EA
-
- \ bit 11 is set, now test for word or longword
- MOVE.L $-8(A2),D1
- MOVE.L #$400,D0 \ bit 10 is set for a longword
- AND.L D0,D1
- BEQ.S @f \ +$14 $5653CA
-
- \ load a longword into A0
- MOVE.W #$205E,D0 \ $205E - MOVE.L (A6)+,A0
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-120(PC) $5652A4
- BRA.S @e \ +$24 $5653EA
-
- @f \ $005653CA
- \ load a word into A0
- MOVE.W #$306E,D0 \ $306E - MOVE.W 2(A6),A0
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-130(PC) $5652A4
- MOVEQ.L #$2,D0 \ $2
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-138(PC) $5652A4
- MOVE.W #$588E,D0 \ $588E - ADDQ.L #4,A6
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-144(PC) $5652A4
-
- @e \ $005653EA
- \ compile the trap opcode
- MOVE.L $-4(A2),-(A6)
- JSR compile.opcode \ $-14C(PC) $5652A4
-
- \ test bit 5 of byte56 - get result from A0
- MOVE.L $-8(A2),D1
- MOVEQ.L #$20,D0 \ bit 5 set if A0 has result
- AND.L D0,D1
- BEQ.S @g \ +$3A $565436
-
- \ push a result from A0
- MOVE.L $-8(A2),D1
- MOVEQ.L #$10,D0 \ bit 4 set if longword
- AND.L D0,D1
- BEQ.S @h \ +$14 $56541E
-
- \ move longword from A0 to stack
- MOVE.W #$2D08,D0 \ $2D08 - MOVE.L A0,-(A6)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-174(PC) $5652A4
- BRA.S @g \ +$1C $565436
-
- @h \ $0056541E
- \ move word from A0 to stack
- MOVE.W #$3D08,D0 \ $3D08 - MOVE.W A0,-(A6)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-184(PC) $5652A4
- MOVE.W #$4266,D0 \ $4266 - CLR.W -(A6)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-190(PC) $5652A4
-
- @g \ $00565436
- \ bit 3 set if result is in D0
- MOVE.L $-8(A2),D1
- MOVEQ.L #$8,D0 \ bit 3 set if result in D0
- AND.L D0,D1
- BEQ.S @i \ +$2A $56546A
-
- MOVE.L $-8(A2),D1
- MOVEQ.L #$4,D0 \ bit 2 set if result is longword
- AND.L D0,D1
- BNE.S @j \ +$10 $56545E
-
- MOVE.W #$48C0,D0 \ $48C0 - EXT.L D0
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-1B8(PC) $5652A4
-
- @j \ $0056545E
- MOVE.W #$2D00,D0 \ $2D00 - MOVE.L D0,-(A6)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-1C4(PC) $5652A4
-
- @i \ $0056546A
- \ bit 1 set for result in A1
- MOVE.L $-8(A2),D1
- MOVEQ.L #$2,D0 \ is bit 1 set
- AND.L D0,D1
- BEQ.S @k \ +$3A $5654AE
-
- MOVE.L $-8(A2),D1
- MOVEQ.L #$1,D0 \ bit 0 set for longword
- AND.L D0,D1
- BEQ.S @l \ +$14 $565496
-
- \ result in A1 is a longword
- MOVE.W #$2D09,D0 \ $2D09 - MOVE.L A1,-(A6)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-1EC(PC) $5652A4
- BRA.S @k \ +$1C $5654AE
-
- @l \ $00565496
- \ result in A1 is a word
- MOVE.W #$3D09,D0 \ $3D09 - MOVE.W A1,-(A6)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-1FC(PC) $5652A4
- MOVE.W #$4266,D0 \ $4266 - CLR.W -(A6)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-208(PC) $5652A4
-
- @k \ $005654AE
- UNLK A2
- RTS
- END-CODE
-
- CODE Word8 \ $005654B2
- \ this routine is for ToolBox words
- \ byte4 contains the number of parameters left to be transferred to
- \ the A7 stack
- \ for the nth parameter, this routine extracts the bit in byte56 that
- \ tells us whether it is a word or longword
- LINK A2,#$-C
- MOVE.L (A6)+,$-8(A2) \ byte4 & $3F - 1
- MOVE.L (A6)+,$-4(A2) \ byte 56
- MOVEQ.L #$1,D0
- MOVE.L D0,$-C(A2) \ 1 -> lvar1
-
- @b \ $005654C4 BEGIN
- TST.L $-8(A2) \ byte4 IF
- BEQ.S @a \ +$18 $5654E2 WHILE
-
- MOVE.L $-C(A2),D0 \ lvar1
- ADD.L D0,D0 \ 2* - shift the bit left 1 bit
- MOVE.L D0,$-C(A2) \ -> lvar1
- MOVEQ.L #$-1,D0 \ -1
- ADD.L D0,$-8(A2) \ +> byte4
- BRA.S @b \ +$-1A $5654C4 REPEAT
-
- @a \ $005654E2
- MOVE.L $-4(A2),D1 \ byte56
- MOVE.L $-C(A2),D0 \ lvar1
- AND.L D0,D1 \ and
- MOVE.L D1,-(A6)
- UNLK A2
- RTS
- END-CODE
-
- CODE Build.ToolTrap \ $005654F0
- \ bit 15 of byte56 is set
- LINK A2,#$-10
- MOVE.L (A6)+,$-8(A2) \ byte56
- MOVE.L (A6)+,$-4(A2) \ byte4
- MOVE.L $-4(A2),D1
- MOVEQ.L #$3F,D0 \ clear bits 6-7 of byte4
- AND.L D0,D1
- MOVE.L D1,$-C(A2) \ store in lvar1 - is count of parameters on stack
- MOVE.L $-4(A2),D1 \ byte4
- MOVE.L #$C0,D0 \ get flag bits
- AND.L D0,D1
- MOVE.L D1,$-10(A2) \ lvar2 - flag bits
- BEQ.S @a \ +$2E $56554C - branch if flag bits are clear
-
- \ at least one of the result bits are set
- MOVE.L $-10(A2),D1
- MOVEQ.L #$40,D0 \ $40 - test bit 6
- CMP.L D0,D1
- BNE.S @b \ +$14 $565540
-
- \ bit 6 is set, so allocate a longword result
- MOVE.W #$42A7,D0 \ $42A7 - CLR.L -(A7)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-296(PC) $5652A4
- BRA.S @a \ +$10 $56554C
-
- @b \ $00565540
- \ bit 6 is clear, bit 7 is set, so allocate a word result
- MOVE.W #$4267,D0 \ $4267 - CLR.W -(A7)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-2A6(PC) $5652A4
-
- @a \ $0056554C
- MOVE.L $-C(A2),D0 \ lvar1
- BEQ.S @c \ +$78 $5655CA - no more parameters to push
-
- MOVEQ.L #$-1,D0
- ADD.L D0,$-C(A2) \ subtract 1 from parameter count
- MOVE.L $-8(A2),-(A6) \ byte56
- MOVE.L $-C(A2),-(A6) \ count-x
- JSR Word8 \ $-B4(PC) $5654B2 - get bit value for next parameter
- TST.L (A6)+ \ IF - is the value is a word-length push
- BEQ.S @d \ +$3E $5655A8
-
- MOVE.L $-C(A2),D0 \ get parameter count
- BEQ.S @e \ +$24 $565598 top word on stack
-
- MOVE.W #$2F2E,D0 \ $2F2E - MOVE.L d(A6),-(A7)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-2DE(PC) $5652A4
- MOVE.L $-C(A2),-(A6) \ get count
- MOVEQ.L #$4,D0 \ $4
- MOVE.L D0,-(A6)
- JSR $B2(A5) \ * - multiply by four to get stack offset
- JSR compile.opcode \ $-2EE(PC) $5652A4
- BRA.S @f \ +$10 $5655A4
-
- @e \ $00565598
- \ push the top longword
- MOVE.W #$2F16,D0 \ $2F16 - MOVE.L (A6),-(A7)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-2FE(PC) $5652A4
-
- @f \ $005655A4
- BRA.S @g \ +$22 $5655C6
-
- @d \ $005655A8
- \ push a word-length value from a longword on the stack
- MOVE.W #$3F2E,D0 \ $3F2E - MOVE.W d(A6),-(A7
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-30E(PC) $5652A4
- MOVE.L $-C(A2),-(A6) \ get count
- MOVEQ.L #$4,D0 \ $4 - offset into A6 stack
- MOVE.L D0,-(A6)
- JSR $B2(A5) \ *
- ADDQ.L #$2,(A6) \ 2+ - add2 becuz it is a word value
- JSR compile.opcode \ $-320(PC) $5652A4
-
- @g \ $005655C6
- BRA.S @a \ +$-7A $56554C
-
- @c \ $005655CA
- \ no more paramenters to push
- MOVE.L $-4(A2),D1 \ get byte4
- MOVEQ.L #$3F,D0 \ mask out flags
- AND.L D0,D1
- MOVE.L D1,$-10(A2) \ put in lvar
- BEQ.S @h \ +$20 $5655FC - there are no A6 parms
-
- \ clear the A6 parms stack
- MOVE.W #$DCFC,D0 \ $DCFC - ADDA.W #n,A6
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-346(PC) $5652A4
- MOVE.L $-10(A2),-(A6) \ get count
- MOVEQ.L #$4,D0 \ $4
- MOVE.L D0,-(A6)
- JSR $B2(A5) \ * - number of longwords on stack
- JSR compile.opcode \ $-356(PC) $5652A4
-
- @h \ $005655FC
- UNLK A2
- RTS
- END-CODE
-
- CODE compile.result \ $00565600
- LINK A2,#$-8
- MOVE.L (A6)+,$-4(A2) \ byte4
- MOVE.L $-4(A2),D1
- MOVEQ.L #$60,D0
- ADD.W D0,D0 \ =$C0 - are the results bits set
- AND.L D0,D1
- MOVE.L D1,$-8(A2) \ save results bits
- BEQ.S @a \ IF -are any results bits set
-
- MOVEQ.L #$40,D0 \ $40 bit 6 is set for longword result
- CMP.L D0,D1
- BNE.S @b \ +$14 $565640
-
- MOVE.W #$2D1F,D0 \ $2D1F - MOVE.L (A7)+,-(A6)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $5652A4
- BRA.S @a \ +$28 $565664
-
- @b \ $00565640
- MOVE.W #$301F,D0 \ $301F - MOVE.W (A7)+,D0
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $5652A4
- MOVE.W #$48C0,D0 \ $48C0 - EXT.L D0
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $5652A4
- MOVE.W #$2D00,D0 \ $2D00 - MOVE.L D0,-(A6)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $5652A4
-
- @a \ $00565664
- UNLK A2
- RTS
- END-CODE
-
- CODE calc.stacksize ( byte4 byte56 -- stacksize )
- MOVE.L (A6)+,D0 \ byte56
- MOVE.L (A6)+,D1 \ get byte4
- MOVEQ.L #$3F,D2 \ mask out result bits
- AND.L D2,D1
- MOVEQ.L #0,D2 \ size of stack will be accumulated here
- BRA.S @testforend
-
- @myloop
- LSR.L #1,D0
- BCS.S @itsalong
-
- ADDQ.L #2,D2
- BRA.S @testforend
-
- @itsalong
- ADDQ.L #4,D2
-
- @testforend
- DBRA D1,@myloop
-
- MOVE.L D2,-(A6)
- RTS
- END-CODE
-
- CODE compile.CTBTrap ( byte4 byte56 selector -- )
- \ call this when we have to compile a Comm Toolbox Trap
- LINK A2,#$-14
- MOVE.L (A6)+,$-C(A2) \ selector
- MOVE.L (A6)+,$-8(A2) \ byte56
- MOVE.L (A6)+,$-4(A2) \ byte4
- MOVE.L $-4(A2),D1
- MOVEQ.L #$3F,D0 \ clear bits 6-7 of byte4
- AND.L D1,D0
- MOVE.L D0,$-10(A2) \ store in lvar1 - is count of parameters on stack
- MOVE.L #$C0,D0 \ get flag bits
- AND.L D1,D0
- MOVE.L D0,$-14(A2) \ lvar2 - flag bits
-
- @a
- TST.L $-10(A2) \ lvar1
- BEQ.S @c \ +$78 $5655CA - no more parameters to push
-
- MOVEQ.L #$-1,D0
- ADD.L D0,$-10(A2) \ subtract 1 from parameter count
- MOVE.L $-8(A2),-(A6) \ byte56
- MOVE.L $-10(A2),-(A6) \ count-x
- JSR Word8 \ get bit value for next parameter
- TST.L (A6)+ \ IF - is the value is a word-length push
- BEQ.S @d \
-
- TST.L $-10(A2) \ get parameter count
- BEQ.S @e \ top word on stack
-
- MOVE.W #$2F2E,D0 \ $2F2E - MOVE.L d(A6),-(A7)
- MOVE.L D0,-(A6)
- JSR compile.opcode \
- MOVE.L $-10(A2),-(A6) \ get count
- MOVEQ.L #$4,D0 \ $4
- MOVE.L D0,-(A6)
- JSR $B2(A5) \ * - multiply by four to get stack offset
- JSR compile.opcode \
- BRA.S @f \
-
- @e \
- \ push the top longword
- MOVE.W #$2F16,D0 \ $2F16 - MOVE.L (A6),-(A7)
- MOVE.L D0,-(A6)
- JSR compile.opcode \
-
- @f \
- BRA.S @g \
-
- @d \
- \ push a word-length value from a longword on the stack
- MOVE.W #$3F2E,D0 \ $3F2E - MOVE.W d(A6),-(A7
- MOVE.L D0,-(A6)
- JSR compile.opcode \
- MOVE.L $-10(A2),-(A6) \ get count
- MOVEQ.L #$4,D0 \ $4 - offset into A6 stack
- MOVE.L D0,-(A6)
- JSR $B2(A5) \ *
- ADDQ.L #$2,(A6) \ 2+ - add2 becuz it is a word value
- JSR compile.opcode \
-
- @g \ we are not done xfering data to A7 stack
- BRA.S @a \ go back and get the next parameter
-
- @c \
- \ no more paramenters to push
- MOVE.L $-4(A2),D1 \ get byte4
- MOVEQ.L #$3F,D0 \ mask out flags
- AND.L D0,D1
- MOVE.L D1,$-10(A2) \ put in lvar
- BEQ.S @h \ there are no A6 parms
-
- \ clear the A6 parms stack
- MOVE.W #$DCFC,D0 \ $DCFC - ADDA.W #n,A6
- MOVE.L D0,-(A6)
- JSR compile.opcode \
- MOVE.L $-10(A2),-(A6) \ get count
- MOVEQ.L #$4,D0 \ $4
- MOVE.L D0,-(A6)
- JSR $B2(A5) \ * - number of longwords on stack
- JSR compile.opcode \
-
- @h \ $005655FC
- \ now compile the selector
- MOVE.W #$3F3C,D0 \ MOVE.W #nnn,-(A7)
- MOVE.L D0,-(A6)
- JSR compile.opcode
- MOVE.L $-C(A2),-(A6)
- JSR compile.opcode
-
- \ compile the A7->A0 and the trap word
- MOVE.W #$204F,D0 \ MOVE.L A7,A0
- MOVE.L D0,-(A6)
- JSR compile.opcode
- MOVE.W #$A08B,D0 \ _CommToolBoxDispatch
- MOVE.L D0,-(A6)
- JSR compile.opcode
-
- \ now deallocate the A7 stack frame
- MOVE.L $-4(A2),-(A6)
- MOVE.L $-8(A2),-(A6)
- JSR calc.stacksize
- MOVE.L (A6)+,D0
- ADDQ.L #2,D0 \ add 2 for the selector
- MOVEQ.L #8,D1
- CMP.L D1,D0
- BGT.S @large.sframe
-
- ANDI.W #7,D0 \ need only low three bits
- MOVEQ.L #9,D1 \ shift stacksize to bits 9-11
- LSL.W D1,D0
- ADDI.W #$508F,D0 \ create ADDQ.L #n,A7
- MOVE.L D0,-(A6)
- JSR compile.opcode
- BRA.S @save.result
-
- @large.sframe
- MOVE.L D0,-(A6) \ save the stacksize
- MOVE.W #$DEFC,D0 \ ADDA.W #nnn,A7
- MOVE.L D0,-(A6)
- JSR compile.opcode
- JSR compile.opcode \ compile the stacksize
-
- @save.result
- MOVE.L $-14(A2),D0 \ are any result bits set
- BEQ.S @exit.here
-
- BTST #7,D0 \ bit 7 is set for word result
- BEQ.S @do.lword \ branch for longword result
-
- \ do a word result
- MOVE.W #$48C0,D0 \ $48C0 - EXT.L D0
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $5652A4
-
- @do.lword
- MOVE.W #$2D00,D0 \ $2D00 - MOVE.L D0,-(A6)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $5652A4
-
- @exit.here
- UNLK A2
- RTS
- END-CODE
-
- : special.trap
- { byte4 byte56 trap# selector flags | -- }
- trap# $0FFF AND
- CASE
- $8B \ CommToolBoxDispatch
- OF
- byte4 byte56 selector compile.CTBTrap \ compile the whole thing
- ENDOF
- ENDCASE
- ;
-
- CODE compile.selector ( selector flagbyte -- )
- LINK A2,#$-4
- MOVE.L (A6)+,D0 \ flag byte of trap word
- MOVE.L (A6)+,D1 \ selector
-
- MOVEQ.L #$40,D2
- AND.B D0,D2 \ is bit 14 set indicating selector in register
- BEQ @c \ +$36 $5656DC
-
- \ bit 14 of trap# is set - put selector in D0
- \ now check for longword bit
- MOVEQ.L #$20,D2
- AND.B D0,D2
- BNE.S @lword2D0 \ branch if bit is set
-
- MOVE.L D1,D2 \ is selector plus
- BPL.S @test.for.quick
-
- NEG.L D2 \ make negative selector positive
-
- @test.for.quick
- MOVEQ.L #$7F,D0
- CMP.L D0,D2
- BGT.S @big.wordD0
-
- \ we can use a moveq to D0
- MOVE.W #$7000,D0
- ANDI.W #$00FF,D1
- ADD.W D1,D0
- MOVE.L D0,-(A6)
- JSR compile.opcode
- BRA.S @e
-
- @big.wordD0
- MOVE.L D1,$-4(A2) \ save the selector
- MOVE.W #$303C,D0 \ $303C - MOVE.W #n,D0
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-41A(PC) $5652A4
- MOVE.L $-4(A2),-(A6) \ get selector
- JSR compile.opcode \ compile high word
- BRA.S @e \ +$10 $5656D8
-
- @lword2D0
- MOVE.L D1,D2 \ is selector plus
- BPL.S @test.for.quick2
-
- NEG.L D2 \ make negative selector positive
-
- @test.for.quick2
- MOVEQ.L #$7F,D0
- CMP.L D0,D2
- BGT.S @big.lwordD0
-
- \ we can use a moveq to D0
- MOVE.W #$7000,D0
- ANDI.W #$00FF,D1
- ADD.W D1,D0
- MOVE.L D0,-(A6)
- JSR compile.opcode
- BRA.S @e
-
- @big.lwordD0
- MOVE.L D1,$-4(A2) \ save the selector
- MOVE.W #$203C,D0 \ $203C - MOVE.L #n,D0
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-41A(PC) $5652A4
- MOVE.L $-4(A2),D0 \ get selector
- SWAP.W D0 \ compile high word of selector
- MOVE.L D0,-(A6) \ push on stack
- JSR compile.opcode \ compile high word
- MOVE.L $-4(A2),-(A6) \ compile selector low word
- JSR compile.opcode \ $-422(PC) $5652A4
-
- @e \ $005656D8
- BRA @b \
-
- @c \ $005656DC
- \ bit14 of trap# is zero, so compile a selector on the stack
- \ first test for longword on the stack
- MOVEQ.L #$20,D2 \ the bit is set for longword on stack
- AND.B D0,D2
- BNE.S @do.lstack
-
- TST.L D1 \ IF selector equals zero
- BEQ.S @f \ +$1C $5656FE
-
- MOVE.L D1,$-4(A2)
- MOVE.W #$3F3C,D0 \ $3F3C - MOVE.W #n,-(A7)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-44C(PC) $5652A4
- MOVE.L $-4(A2),-(A6) \ selector
- JSR compile.opcode \ $-454(PC) $5652A4
- BRA.S @b \ +$10 $56570A
-
- @f \ $005656FE
- MOVE.W #$4267,D0 \ $4267 - CLR.W -(A7)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-464(PC) $5652A4
- BRA.S @b
-
- @do.lstack
- TST.L D1 \ IF selector equals zero
- BEQ.S @f2 \ branch if selector is zero
-
- MOVE.L D1,D2
- BPL.S @xxx2
-
- NEG.L D2
-
- @xxx2
- MOVEQ.L #$7F,D0
- CMP.L D0,D2
- BGT.S @full.lword
-
- MOVE.W #$7000,D0
- ANDI.W #$00FF,D1
- ADD.W D1,D0
- MOVE.L D0,-(A6)
- JSR compile.opcode
- MOVE.W #$2F00,D0 \ $2F00 - MOVE.L D0,-(A7)
- MOVE.L D0,-(A6)
- JSR compile.opcode
- BRA.S @b
-
- @full.lword
- MOVE.L D1,$-4(A2) \ save selector
- MOVE.W #$2F3C,D0 \ $2F3C - MOVE.L #n,-(A7)
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-44C(PC) $5652A4
- MOVE.L $-4(A2),D0 \ selector
- SWAP.W D0
- MOVE.L D0,-(A6) \ first compile high word of selector
- JSR compile.opcode \ $-454(PC) $5652A4
- MOVE.L $-4(A2),-(A6) \ the compile low word
- JSR compile.opcode
- BRA.S @b \ +$10 $56570A
-
- @f2 \ $005656FE
- MOVE.W #$7000,D0 \ $7000 - MOVEQ.L #0,D0
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-464(PC) $5652A4
- MOVE.W #$2F00,D0 \ $2F00 - MOVE.L D0,-(A7)
- MOVE.L D0,-(A6)
- JSR compile.opcode
-
- @b
- UNLK A2
- RTS
- END-CODE
-
- CODE compile.theTrap \ $00565668
- \ _Debugger
- LINK A2,#$-1C
- MOVE.L (A6)+,$-14(A2) \ byte4
- MOVE.L (A6)+,$-10(A2) \ byte56
- MOVE.L (A6)+,$-C(A2) \ trap#
- MOVE.L (A6)+,$-8(A2) \ selector
- MOVE.L (A6)+,$-4(A2) \ high nybble of trap#
-
- MOVE.L $-4(A2),D2 \ get high nybble of trap#
- MOVEQ.L #$10,D1 \ is the special trap flag set
- AND.W D1,D2
- BEQ.S @i \ branch if not set
-
- \ it is a special trap
- MOVE.L $-14(A2),-(A6)
- MOVE.L $-10(A2),-(A6)
- MOVE.L $-C(A2),-(A6)
- MOVE.L $-8(A2),-(A6)
- MOVE.L $-4(A2),-(A6)
- JSR special.trap
- UNLK A2
- RTS
-
- @i
- MOVE.L $-10(A2),D1 \ get byte56
- MOVE.L #$8000,D0 \ is it a ToolBox call
- AND.W D0,D1
- BNE.S @a \ +$90 $56571E
-
- \ bit 15 is clear, it is an OSTrap call
- MOVE.L $-4(A2),D1 \ get high nybble of trap#
- MOVE.W #$80,D2
- AND.B D2,D1 \ is bit 15 set, indicating a selector word
- BEQ.S @b \ branch if selector bit is clear
-
- MOVE.L $-8(A2),-(A6) \ selector
- MOVE.L $-4(A2),-(A6) \ bit14 of trap#
- JSR compile.selector
-
- @b \ $0056570A
- MOVE.L $-C(A2),-(A6) \ trap#
- MOVE.L $-10(A2),-(A6) \ byte56
- MOVE.L $-14(A2),-(A6) \ byte4
- JSR build.OSTrap \ $-436(PC) $5652E2
- UNLK A2
- RTS
-
- @a \ $0056571E
- \ the CALL is a ToolBox routine
- MOVE.L $-14(A2),-(A6) \ byte4
- MOVE.L $-10(A2),-(A6) \ byte56
- JSR Build.ToolTrap \ $-238(PC) $5654F0
-
- MOVE.L $-4(A2),D0 \ get high nybble of trap#
- MOVE.W #$80,D1 \ is bit 15 set indicating routine selector
- AND.B D1,D0
- BEQ.S @g \ branch if clear
-
- MOVE.L $-8(A2),-(A6) \ selector
- MOVE.L $-4(A2),-(A6) \ bit14 of trap#
- JSR compile.selector
-
- @g \ $00565766
- MOVE.L $-C(A2),-(A6) \ trap#
- JSR compile.opcode \ $-4C8(PC) $5652A4
- MOVE.L $-14(A2),-(A6) \ byte4
- JSR compile.result \ $-174(PC) $565600
- UNLK A2
- RTS
- END-CODE
-
- CODE calc.Trap.code \ $0056577A
- LINK A2,#$-24
- MOVE.L (A6)+,$-4(A2) \ address of trapword string
- LEA $-24(A2),A0 \ buffer
- MOVE.L A0,-(A6)
- MOVEQ.L #$20,D0 \ $20
- MOVE.L D0,-(A6)
- MOVE.L D0,-(A6)
- JSR $46A(A5) \ FILL with spaces
- MOVEA.L $-4(A2),A0 \ address of trapword string
- MOVEQ.L #$0,D0
- MOVE.B (A0),D0 \ byte count
- ANDI.B #$1F,D0
- MOVE.L D0,-(A6)
- MOVEQ.L #$0,D0 \ $0
- MOVE.L D0,-(A6)
- MOVE.L D5,(A3)+ \ DO
- MOVE.L D6,(A3)+
- MOVE.L (A6)+,D6
- MOVE.L (A6)+,D5
- MOVEQ.L #0,D1
- MOVEQ.L #$60,D2 \ $60
- MOVE.L #$DF,D0
- MOVE.L $-4(A2),A0
- ADDQ.L #1,A0
- LEA $-24(A2),A1
-
- @b \ $005657B2
- MOVE.B (A0,D6.L),D1 \ get letter of name
- CMP.L D2,D1
- BLE.S @a \ +$14 $5657E4
-
- AND.L D0,D1
-
- @a \ $005657E4
- MOVE.B D1,(A1,D6.L)
- ADDQ.L #$1,D6
- CMP.L D6,D5
- BGT.S @b \ +$-4A $5657B2
-
- MOVE.L -(A3),D6 \ LOOP
- MOVE.L -(A3),D5
-
- MOVEQ.L #0,D2 \ clear D2
- MOVE.L $-4(A2),A0 \ get the pointer to the word
- MOVE.B (A0),D2 \ get size of word
- MOVE.L D2,D0 \ initialize the hash accumulator
- AND.B #$1F,D2 \ only do 31 letters
- LEA $-24(A2),A0 \ get uppercase word buffer
- BRA.S @lptest
-
- @loop
- ROL.W #7,D0
- MOVE.B (A0)+,D1
- EOR.B D1,D0
-
- @lptest
- DBRA D2,@loop
- MOVE.L D0,-(A6)
- UNLK A2
- RTS
- END-CODE
-
- CODE (ASSEMBLER_TRAP) \ $0056582C
- LINK A2,#$-10
- MOVE.L (A6)+,$-8(A2) \ string address
- MOVE.L (A6)+,$-4(A2)
- MOVE.L $-8(A2),-(A6)
- JSR calc.Trap.code \ $-C4(PC) $56577A
- MOVE.L (A6)+,$-10(A2) \ store string code
- MOVE.L $-8(A2),-(A6)
- MOVE.L $-4(A2),-(A6)
- MOVEA.L $-8(A2),A0
- MOVEQ.L #$0,D0
- MOVE.B (A0),D0
- MOVE.L D0,-(A6)
- MOVEQ.L #$A,D0
- SUB.L D0,(A6)
- TST.L (A6)+ \ IF
- BGE.S @a \ +$C $565868
-
- MOVEQ.L #$20,D0 \ $20
- MOVE.L D0,-(A6)
- BRA.S @b \ +$28 $56588C
-
- @a \ $00565868
- MOVE.L $-8(A2),-(A6)
- MOVEQ.L #$A,D0
- ADD.L D0,(A6)
- MOVEA.L (A6)+,A0
- MOVEQ.L #$0,D0
- MOVE.B (A0),D0
- MOVE.L D0,-(A6)
- MOVE.L (A6),-(A6) \ DUP
- MOVEQ.L #$60,D0 \ $60
- MOVE.L D0,-(A6)
- CMPM.L (A6)+,(A6)+
- BLE.S @b \ +$C $56588C
-
- MOVE.L #$DF,D0
- AND.L D0,(A6)
-
- @b \ $0056588C
- MOVE.L $-10(A2),-(A6)
- JSR get.Trap.entry \ $-79C(PC) $5650F6 ( -- trap# byte56 byte4 byte7.L hi.nybble )
- ADDQ.L #$8,A6 \ 2DROP ( -- trap# byte56 byte4 )
- UNLK A2
- RTS
- END-CODE
-
- CODE get.Trap.info \ $0056589A
- LINK A2,#$-8
- MOVEQ.L #$20,D0 \ $20
- MOVE.L D0,-(A6)
- JSR $6CA(A5) \ WORD ( -- addr )
- MOVE.L (A6)+,$-4(A2) \ word.addr
- MOVE.L $-4(A2),-(A6) \ push word.addr
- JSR calc.Trap.code \ $-136(PC) $56577A ( -- code )
- MOVE.L (A6)+,$-8(A2) \ save in lvar
- MOVE.L $-4(A2),A0 \ get word string
- MOVE.L A0,-(A6) \ get word string
- MOVEQ.L #$0,D0
- MOVE.B $1(A0),D0 \ D0 has first letter
- MOVE.L D0,-(A6) \ push on stack ( -- @str 1ltr )
- MOVEQ.L #$60,D1 \ $60
- CMP.L D1,D0 \ ( @str 1ltr -- @str 1ltr )
- BLE.S @a \ +$C $5658DC
-
- \ first char is > $60
- MOVE.W #$DF,D0
- AND.L D0,(A6) \ make first letter uppercase ( -- @str 1ltr )
-
- @a \ $005658DC
- MOVEA.L $-4(A2),A0 \ get word string
- MOVEQ.L #$0,D0
- MOVE.B (A0),D0 \ get count byte
- MOVEQ.L #$A,D1
- SUB.L D1,D0
- TST.L D0 \ IF
- BGE.S @b \ +$C $5658F8 - branch if length >= 10
-
- MOVEQ.L #$20,D0 \ $20
- MOVE.L D0,-(A6)
- BRA.S @c \ +$28 $56591C
-
- \ ( -- @str 1ltr )
- @b \ $005658F8
- MOVE.L $-4(A2),A0 \ ( -- @str 1ltr @str )
- MOVEQ.L #$0,D0
- MOVE.B $A(A0),D0 \ get 10th ltr
- MOVE.L D0,-(A6)
- MOVEQ.L #$60,D1 \ $60
- CMP.L D1,D0 \ is it greater than $60
- BLE.S @c \ +$C $56591C - branch if uppercase
-
- MOVE.L #$DF,D0 \ make uppercase
- AND.L D0,(A6)
-
- @c \ $0056591C
- MOVE.L $-8(A2),-(A6) \ ( -- @str 1ltr 10ltr hash.code )
- JSR get.Trap.entry \ $-82C(PC) $5650F6
- UNLK A2 \ ( -- trap# byte56 byte4 byte7.L hi.nybble )
- RTS
- END-CODE
-
- CODE print.Trap.info \ $00565928
- LINK A2,#$-4
- MOVE.L (A6)+,$-4(A2) \ low nybble of byte4
- BEQ.S @a \ +$36 $56596C - exit
-
- MOVE.L $-4(A2),-(A6)
- MOVEQ.L #$0,D0 \ $0
- MOVE.L D0,-(A6)
- MOVE.L D5,(A3)+ \ DO
- MOVE.L D6,(A3)+
- MOVE.L (A6)+,D6
- MOVE.L (A6)+,D5
-
- @b \ $0056594A
- MOVEQ.L #$6E,D0 \ $6E 'n'
- MOVE.L D0,-(A6)
- JSR $28A(A5) \ EMIT
- MOVEQ.L #$31,D0
- ADD.L D6,D0
- MOVE.L D0,-(A6) \ I
- JSR $28A(A5) \ EMIT
- JSR $3DA(A5) \ SPACE
- ADDQ.L #$1,D6
- CMP.L D6,D5
- BGT.S @b \ +$-1A $56594A
-
- MOVE.L -(A3),D6
- MOVE.L -(A3),D5
-
- @a \ $0056596C
- UNLK A2
- RTS
- END-CODE
-
- CODE (TRAP#) \ $00565970
- LINK A2,#$-C
- LEA $24(A4),A0 \ Ref: BASE
- MOVE.L (A0),$-C(A2) \ save BASE
- JSR $502(A5) \ HEX
- JSR get.Trap.info \ $-E8(PC) ( -- trap# byte56 byte4 selector trap.flags )
- ADDQ.L #$8,A6 \ 2DROP
- MOVE.L (A6)+,$-8(A2) \ byte4
- ADDQ.L #$4,A6 \ DROP
- MOVE.L (A6)+,$-4(A2) \ trap#
- MOVEQ.L #$24,D0 \ $24
- MOVE.L D0,-(A6)
- JSR $28A(A5) \ EMIT
- MOVE.L $-4(A2),-(A6) \ trap#
- JSR $10A(A5) \ <#
- JSR $592(A5) \ #S
- JSR $57A(A5) \ #>
- JSR $15A(A5) \ TYPE
- BSR.S @a \ +$8
-
- DC.B $4
- DC.B ' ( '
- .ALIGN
-
- @a \ $005659B6
- MOVE.L (A7)+,-(A6)
- JSR $EA(A5) \ <$5D3BCE> $538CE8
- MOVE.L $-8(A2),-(A6) \ byte4
- MOVEQ.L #$F,D0
- AND.L D0,(A6) \ get low nybble
- JSR print.Trap.info \ $-9E(PC) $565928 write out input values
-
- BSR.S @b \ +$6
- DC.B $3
- DC.B '-- '
- .ALIGN
-
- @b \ $005659CE
- MOVE.L (A7)+,-(A6)
- JSR $EA(A5) \
- MOVE.L $-8(A2),-(A6) \ byte4
- MOVEQ.L #$10,D0 \ $10
- MOVE.L D0,-(A6)
- JSR $AA(A5) \ / - shift right 4 bits
- MOVE.L (A6)+,$-8(A2) \ push in byte4
- MOVE.L $-8(A2),-(A6)
- MOVEQ.L #$4,D0
- CMP.L (A6),D0 \ is it 4
- BNE.S @c \ +$10 $5659FC
-
- ADDQ.L #$4,A6 \ DROP
- MOVEQ.L #$1,D0
- MOVE.L D0,$-8(A2) \ set it to be 1
- BRA.S @d \ +$1A $565A12
-
- @c \ $005659FC
- MOVEQ.L #$8,D0
- CMP.L (A6),D0 \ is it 8
- BNE.S @e \ +$10 $565A10
-
- ADDQ.L #$4,A6 \ DROP
- MOVEQ.L #$1,D0 \ set it to be 1
- MOVE.L D0,$-8(A2)
- BRA.S @d \ +$6 $565A12
-
- @e \ $00565A10
- ADDQ.L #$4,A6 \ DROP
-
- @d \ $00565A12
- MOVE.L $-8(A2),-(A6)
- JSR print.Trap.info \ $-F0(PC) $565928 - output the return values
- BSR.S @f \ +$4
- DC.B $1
- DC.B ')'
- .ALIGN
-
- @f \ $00565A1E
- MOVE.L (A7)+,-(A6)
- JSR $EA(A5) \ type the string
- JSR $3C2(A5) \ CR
- MOVE.L $-C(A2),D0
- LEA $24(A4),A0 \ Ref: BASE
- MOVE.L D0,(A0)
- UNLK A2
- RTS
- END-CODE
-
- CODE compile.EXGL2 \ $00565A44
- MOVE.W #$C98F,D0 \ $C98F - EXG.L D4,A7
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-7AA(PC) $5652A4
- RTS
- END-CODE
-
- CODE GV$150 \ $00565A52
- LEA $-148(A5),A0
- MOVE.L $-8(A0),-(A6)
- RTS
- END-CODE
-
- \ CALL comes here
- CODE do.CALL \ $00565A62
- LINK A2,#$-14
- JSR get.Trap.info \ ( -- trap# byte56 byte4 selector trap.flags )
- MOVE.L (A6)+,$-14(A2)
- MOVE.L (A6)+,$-10(A2)
- MOVE.L (A6)+,$-4(A2)
- MOVE.L (A6)+,$-8(A2)
- MOVE.L (A6)+,$-C(A2)
- TST.L $-58E(A5) \ STATE IF
- BEQ.S @a \ +$66 $565AEC
-
- BSR.S GV$150 \ $-3A(PC) $565A52
- JSR $B02(A5) \ HERE
- CMPM.L (A6)+,(A6)+
- BNE.S @b \ +$C $565AA0
-
- BSR.S compile.EXGL2 \ $-56(PC) $565A44
- BRA.S @c \ +$30 $565ACC
-
- @b \ $00565AA0
- JSR $B02(A5) \ HERE
- MOVEA.L (A6)+,A0
- MOVEQ.L #$0,D0
- MOVE.W $-2(A0),D0
- MOVE.W #$C98F,D1 \ $C98F
- CMP.W D0,D1
- BEQ.S @d \ +$C $565AC4
-
- BSR.S compile.EXGL2 \ $-7A(PC) $565A44
- BRA.S @c \ +$C $565ACC
-
- @d \ $00565AC4
- MOVEQ.L #$-2,D0 \ $-2
- MOVE.L D0,-(A6)
- JSR $EF2(A5) \ ALLOT
-
- @c \ $00565ACC
- MOVE.L $-14(A2),-(A6)
- MOVE.L $-10(A2),-(A6)
- MOVE.L $-C(A2),-(A6)
- MOVE.L $-8(A2),-(A6)
- MOVE.L $-4(A2),-(A6)
- JSR compile.theTrap \ $-47A(PC) $565668
- JSR compile.EXGL2 \ $-A2(PC) $565A44
- BRA.S @e \ +$4E $565B36
-
- @a \ $00565AEC
- LEA $13C(A4),A0 \ Ref: PAD
- MOVEQ.L #$20,D0
- ADD.L D0,A0
- LEA $-B5E(A5),A1
- MOVE.L A0,(A1)
- JSR compile.EXGL2 \ $-BA(PC) $565A44
- MOVE.L $-14(A2),-(A6)
- MOVE.L $-10(A2),-(A6)
- MOVE.L $-C(A2),-(A6)
- MOVE.L $-8(A2),-(A6)
- MOVE.L $-4(A2),-(A6)
- JSR compile.theTrap \ $-4AE(PC) $565668
- JSR compile.EXGL2 \ $-D6(PC) $565A44
- MOVE.W #$4E75,D0 \ $4E75
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-882(PC) $5652A4
- LEA $13C(A4),A0 \ Ref: PAD
- MOVEQ.L #$20,D0
- ADD.L D0,A0
- JSR (A0) \ EXECUTE
-
- @e \ $00565B36
- UNLK A2
- RTS
- END-CODE
-
- \ (CALL) comes here
- CODE do.(CALL) \ $00565B3A
- LINK A2,#$-18
- JSR get.Trap.info \ ( -- trap# byte56 byte4 selector trap.flags )
- MOVE.L (A6)+,$-18(A2) \ bit14
- MOVE.L (A6)+,$-14(A2) \ byte7.L
- MOVE.L (A6)+,$-8(A2) \ byte4
- MOVE.L (A6)+,$-C(A2) \ byte56
- MOVE.L (A6)+,$-10(A2) \ trap#
- TST.L $-58E(A5) \ STATE IF
- BEQ.S @a \ +$20 $565B7E
-
- MOVE.L $-18(A2),-(A6)
- MOVE.L $-14(A2),-(A6)
- MOVE.L $-10(A2),-(A6)
- MOVE.L $-C(A2),-(A6)
- MOVE.L $-8(A2),-(A6)
- JSR compile.theTrap \ $-510(PC) $565668
- BRA.S @b \ +$46 $565BC0
-
- @a \ $00565B7E
- LEA $13C(A4),A0 \ Ref: PAD
- MOVEQ.L #$20,D0
- ADD.L D0,A0
- LEA $-B5E(A5),A1
- MOVE.L A0,(A1)
- MOVE.L $-18(A2),-(A6)
- MOVE.L $-14(A2),-(A6)
- MOVE.L $-10(A2),-(A6)
- MOVE.L $-C(A2),-(A6)
- MOVE.L $-8(A2),-(A6)
- JSR compile.theTrap \ $-53C(PC) $565668
- MOVE.W #$4E75,D0 \ $4E75
- MOVE.L D0,-(A6)
- JSR compile.opcode \ $-90C(PC) $5652A4
- LEA $13C(A4),A0 \ Ref: PAD
- MOVEQ.L #$20,D0
- ADD.L D0,A0
- JSR (A0) \ EXECUTE
-
- @b \ $00565BC0
- UNLK A2
- RTS
- END-CODE
-
- CODE (TRAPNAME) \ $00565BC4
- LINK A2,#$-10
- MOVE.L (A6)+,$-4(A2)
- JSR load.TEXT2 \ $-B6E(PC) $565060
- TST.L (A6)+ \ IF
- BNE.S @a \ +$1A $565BEC
-
- MOVEQ.L #$1,D0 \ $1
- EXG D4,A7
- MOVE.W D0,-(A7)
- _SysBeep \ Trap #$A9C8
- EXG D4,A7
- UNLK A2
- RTS
-
- @a \ $00565BEC
- MOVE.L $-4(A2),D1 \ get trap#
- MOVE.L #$400,D0
- AND.L D0,D1 \ is ASYNC bit 10 set
- MOVE.L D1,$-8(A2) \ store bit 10 of trap word
- MOVE.W #$BFF,D0 \ $BFF - get
- MOVE.L $-4(A2),D1
- AND.L D0,D1 \ store trap# as 0000 x0xx xxxx xxxx
- MOVE.L D1,$-4(A2) \ store in lvar
- LEA $-B62(A5),A0 \ pointer to TEXT2
- MOVE.L (A0),$-10(A2) \ store TEXT2 ptr in lvar
-
- @e \ $00565C16
- MOVE.L $-10(A2),A0 \ TEXT2
- MOVEQ.L #$0,D0
- MOVE.B $A(A0),D0 \ get high byte of trap word
- MOVE.L D0,-(A6)
- MOVE.L #$F,D0 \ clear out high byte
- AND.L D0,(A6)
- MOVE.L #$100,D0 \ $100
- MOVE.L D0,-(A6)
- JSR $B2(A5) \ * - shift into upper byte
- MOVE.L $-10(A2),A0 \ get TEXT2 ptr
- MOVEQ.L #$0,D0
- MOVE.B $B(A0),D0
- ADD.L D0,(A6) \ ( -- trapword )
- MOVE.L $-4(A2),-(A6)
- MOVEQ.L #$0,D0
- CMPM.L (A6)+,(A6)+ \ compare with passed in value
- BEQ.S @b \ +$4 $565C58 - set false if trapnumber matches
-
- MOVEQ.L #$-1,D0 \ $-1 - set true if doesn't compare
-
- @b \ $00565C58
- MOVE.L D0,-(A6)
- MOVEA.L $-10(A2),A0 \ TEXT2 ptr
- MOVE.L (A0),D1
- MOVE.L #$25252525,D2 \ $25252525
- MOVEQ.L #$0,D0
- CMP.L D1,D2 \ is it the end
- BEQ.S @c \ +$4 $565C70 set false if it is the end
-
- MOVEQ.L #$-1,D0 \ set true if it is not the end
-
- @c \ $00565C70
- AND.L (A6)+,D0
- BEQ.S @d \ +$E $565C82 - branch forward if the end or match
-
- \ go back if no match and doesn't compare
- MOVEQ.L #$1A,D0 \ add the offset 26
- ADD.L D0,$-10(A2) \ to the TEXT2 ptr
- BRA.S @e \ +$-68 $565C16
-
- @d \ $00565C82
- \ check for the end
- MOVEA.L $-10(A2),A0
- MOVE.L (A0),D1
- MOVE.L #$25252525,D2 \ $25252525
- CMP.L D1,D2
- BEQ.S @f \ +$4A $565CDC - we reached the end
-
- \ we found the word
- MOVE.L $-10(A2),A0 \ get TEXT2 ptr
- MOVEQ.L #$0,D0
- MOVE.B $2(A0),D0
- MOVE.L D0,-(A6) \ push letter
- JSR $28A(A5) \ EMIT
- MOVE.L $-10(A2),-(A6) \ get TEXT2 ptr
- MOVEQ.L #$D,D0 \ offset to rest of trapname
- ADD.L D0,(A6)
- MOVEQ.L #$D,D0 \ $D - count of 13
- MOVE.L D0,-(A6)
- JSR $252(A5) \ -TRAILING
- JSR $15A(A5) \ TYPE
- TST.L $-8(A2) \ get bit 10 IF
- BEQ.S @g \ +$14 $565CD8
-
- BSR.S @h \ +$A
- DC.B $6
- DC.B ',ASYNC'
- .ALIGN
-
- @h \ $00565CD2
- MOVE.L (A7)+,-(A6)
- JSR $EA(A5) \
-
- @g \ $00565CD8
- BRA.S @j \ +$18 $565CF0
-
- @f \ $00565CDC
- BSR.S @i \ +$E
- DC.B $B
- DC.B 'UnknownTrap'
- .ALIGN
-
- @i \ $00565CEA
- MOVE.L (A7)+,-(A6)
- JSR $EA(A5) \
-
- @j \ 00565CF0
- UNLK A2
- RTS
- END-CODE
-
- CODE (DsTrapName) \ $00565CF4
- LINK A2,#$-14
- MOVE.L (A6)+,$-8(A2) \ buffer to write into
- MOVE.L (A6)+,$-4(A2) \ trapnumber
- MOVEQ.L #$0,D0
- MOVE.L D0,$-14(A2)
- JSR load.TEXT2 \ $-CA8(PC) $565060
- TST.L (A6)+ \ IF
- BEQ @a \ +$13C $565E48
-
- MOVE.L $-4(A2),-(A6) \ get trapnumber
- MOVE.L #$400,D0
- AND.L D0,(A6)
- MOVE.L (A6)+,$-C(A2) \ get ASYNC bit 10 setting
- MOVE.L #$BFF,D0 \ $BFF
- MOVE.L D0,-(A6)
- MOVE.L $-4(A2),D0
- AND.L D0,(A6)
- MOVE.L (A6)+,$-4(A2)
- MOVE.L $-B62(A5),$-10(A2) \ pointer to TEXT2
-
- @e \ $00565D3A
- MOVE.L $-10(A2),A0 \ pointer to TEXT2
- MOVEQ.L #$0,D0
- MOVE.B $A(A0),D0 \ get high byte of trap word
- MOVE.L D0,-(A6)
- MOVE.L #$F,D0
- AND.L D0,(A6) \ mask out high byte
- MOVE.L #$100,D0 \ $100 - shift left 8 bits
- MOVE.L D0,-(A6)
- JSR $B2(A5) \ *
- MOVE.L $-10(A2),A0 \ TEXT2
- MOVEQ.L #$0,D0
- MOVE.B $B(A0),D0 \ get low byte of trapword
- ADD.L D0,(A6) \ add to high byte
- MOVE.L $-4(A2),-(A6)
- MOVEQ.L #$0,D0
- CMPM.L (A6)+,(A6)+ \ is it the same
- BEQ.S @b \ +$4 $565D7C
-
- MOVEQ.L #$-1,D0 \ $-1
-
- @b \ $00565D7C
- MOVE.L D0,-(A6)
- MOVEA.L $-10(A2),A0
- MOVE.L (A0),D1
- MOVE.L #$25252525,D2 \ $25252525
- MOVEQ.L #$0,D0
- CMP.L D1,D2
- BEQ.S @c \ +$4 $565D94
-
- MOVEQ.L #$-1,D0
-
- @c \ $00565D94
- AND.L (A6)+,D0
- TST.L D0 \ IF
- BEQ.S @d \ +$E $565DA6
-
- MOVEQ.L #$1A,D0
- ADD.L D0,$-10(A2)
- BRA.S @e \ +$-68 $565D3A
-
- @d \ $00565DA6
- MOVEA.L $-10(A2),A0
- MOVE.L (A0),D1
- MOVE.L #$25252525,D2 \ $25252525
- CMP.L D1,D2
- BEQ @a \ +$92 $565E48 - reached the end
-
- MOVEQ.L #$5F,D0 \ $5F - underscore
- MOVE.L D0,-(A6)
- MOVEA.L $-8(A2),A0 \ get buffer
- MOVE.L (A6)+,D0
- MOVE.B D0,(A0) \ write _ into buffer
- MOVEQ.L #$1,D0
- MOVE.L D0,$-14(A2) \ set byte count
- MOVE.L $-10(A2),-(A6) \ TEXT2
- MOVEQ.L #$2,D0 \ first letter offset
- ADD.L D0,(A6)
- MOVEA.L (A6)+,A0
- MOVEQ.L #$0,D0
- MOVE.B (A0),D0 \ get first letter
- MOVE.L D0,-(A6)
- MOVE.L $-8(A2),-(A6)
- ADDQ.L #$1,(A6) \ 1+
- MOVEA.L (A6)+,A0 \ C!
- MOVE.L (A6)+,D0
- MOVE.B D0,(A0)
- MOVEQ.L #$1,D0
- ADD.L D0,$-14(A2)
- MOVE.L $-10(A2),-(A6) \ get TEXT2 ptr
- MOVEQ.L #$D,D0 \ rest of trapname offset
- ADD.L D0,(A6)
- MOVEQ.L #$D,D0 \ $C
- MOVE.L D0,-(A6)
- JSR $252(A5) \ -TRAILING
- MOVE.L (A6),-(A6) \ DUP
- MOVE.L (A6)+,D0
- ADD.L D0,$-14(A2)
- MOVE.L $-8(A2),-(A6)
- ADDQ.L #$2,(A6) \ 2+
- MOVE.L (A6)+,D0
- MOVE.L (A6)+,D1
- MOVE.L D0,-(A6)
- MOVE.L D1,-(A6)
- JSR $DA(A5) \ CMOVE - copy trapname to buffer
- MOVE.L $-C(A2),-(A6) \ test for ASYNC bit
- TST.L (A6)+ \ IF
- BEQ.S @a \ +$2A $565E48
-
- BSR.S @f \ +$A
- DC.B $6
- DC.B ',ASYNC'
- .ALIGN
-
- @f \ $00565E2C
- MOVE.L (A7)+,-(A6)
- ADDQ.L #$1,(A6) \ 1+
- MOVE.L $-8(A2),-(A6)
- MOVE.L $-14(A2),D0
- ADD.L D0,(A6)
- MOVEQ.L #$6,D0 \ $6
- MOVE.L D0,-(A6)
- JSR $DA(A5) \ CMOVE - copy ASYNC
- MOVEQ.L #$6,D0
- ADD.L D0,$-14(A2)
-
- @a \ $00565E48
- MOVE.L $-14(A2),-(A6)
- UNLK A2
- RTS
- END-CODE
-
- CODE (TRAPLIST) \ $00565E50
- LINK A2,#$-8
- JSR load.TEXT2 \ $-DF6(PC) $565060
- TST.L (A6)+ \ IF
- BNE.S @a \ +$1A $565E74
-
- MOVEQ.L #$1,D0 \ $1
- EXG D4,A7
- MOVE.W D0,-(A7)
- _SysBeep \ Trap #$A9C8
- EXG D4,A7
- UNLK A2
- RTS
-
- @a \
- JSR $3C2(A5) \ CR
- LEA $-B62(A5),A0 \ TEXT2
- MOVE.L (A0),$-4(A2)
- MOVEQ.L #$0,D0
- MOVE.L D0,$-8(A2)
- MOVEQ.L #$1,D0 \ $1
- MOVE.L D0,-(A6)
- MOVEQ.L #$0,D0 \ $0
- MOVE.L D0,-(A6)
- MOVE.L D5,(A3)+ \ DO
- MOVE.L D6,(A3)+
- MOVE.L (A6)+,D6
- MOVE.L (A6)+,D5
-
- @f \ $00565E96
- MOVE.L $-4(A2),A0 \ TEXT2
- MOVE.L $-8(A2),D0 \ offset
- ADD.L D0,A0 \ @record
- MOVEQ.L #$0,D0
- MOVE.B 2(A0),D0 \ get 1st ltr
- MOVE.L D0,-(A6)
- JSR $28A(A5) \ EMIT
- MOVE.L $-4(A2),A0 \ TEXT2
- MOVE.L $-8(A2),D0 \ offset
- ADD.L D0,A0 \ @record
- MOVEQ.L #$D,D0 \ offset to rest of trapname
- ADD.L D0,A0
- MOVE.L A0,-(A6)
- MOVEQ.L #$D,D0 \ $D count of bytes to type out
- MOVE.L D0,-(A6)
- JSR $15A(A5) \ TYPE
- JSR Word3 \ $-1228(PC) $564CA0
- JSR $272(A5) \ ?TERMINAL
- TST.L (A6)+ \ IF
- BEQ.S @b \ +$42 $565F12
-
- JSR $3C2(A5) \ CR
- JSR $1D2(A5) \ KEY
- ADDQ.L #$4,A6 \ DROP
-
- BSR.S @c \ +$18
- DC.B $15
- DC.B 'Space bar to continue'
- .ALIGN
-
- @c \ $00565EF6
- MOVE.L (A7)+,-(A6)
- JSR $EA(A5) \ type it out
- JSR $3C2(A5) \ CR
- JSR $1D2(A5) \ KEY
- MOVEQ.L #$20,D0 \ $20
- MOVE.L D0,-(A6)
- CMPM.L (A6)+,(A6)+
- BEQ.S @b \ +$8 $565F12
-
- BRA.S @d \ +$38 $565F46
-
- @b \ $00565F12
- MOVEQ.L #$1A,D0 \ offset to next traprecord
- ADD.L D0,$-8(A2)
- MOVE.L $-4(A2),A0 \ TEXT2.ptr
- MOVE.L $-8(A2),D0
- ADD.L D0,A0 \ @record
- MOVE.L (A0),D1
- MOVE.L #$25252525,D2 \ $25252525
- MOVEQ.L #$0,D0
- CMP.L D1,D2 \ end of the data
- BNE.S @e \ +$4 $565F36
-
- MOVEQ.L #$-1,D0 \ $-1 true if at the end
-
- @e \ $00565F36
- TST.L D0 \ IF
- BEQ @f \ +$-A4 $565E96 - next word
- ADDQ.L #$1,D6 \ go again
- CMP.L D6,D5
- BGT @f \ +$-AC $565E96
-
- @d \ $00565F46
- MOVE.L -(A3),D6
- MOVE.L -(A3),D5
- JSR $3C2(A5) \ CR
- UNLK A2
- RTS
- END-CODE
-
- HEADER new.CODE11.end
-
- : test.new.code.size
- ['] new.CODE11.end CALL StripAddress
- ['] new.CODE11.start CALL StripAddress - DUP
- 5974 >
- IF
- CR ." *** WARNING *** - new code is too large to fit in CODE11 segment."
- 5974 - CR ." Too big by " . ." bytes."
- ELSE
- 5974 swap -
- CR ." New code is " . ." bytes smaller than the old code."
- THEN
- ;
-
- test.new.code.size
-
-
-
- : install.new.Trapstuff
- { | resRefNum resHandle code.ptr -- }
- " Mach2 2.14 CODE11.new" CALL OpenResFile -> resRefNum
- resRefNum 0=
- IF
- CR ." Could not open the resource file." ABORT
- ELSE
- ASCII CODE 11 CALL GetResource -> resHandle
- resHandle 0=
- IF
- CR ." There must be a CODE 11 resource in the file to modify." ABORT
- ELSE
- resHandle CALL HLock DROP
- resHandle @ CALL StripAddress 4+ -> code.ptr
- ['] new.CODE11.start
- code.ptr
- ['] new.CODE11.end ['] new.CODE11.start -
- CMOVE
-
- ( install the call for (ASCII) )
- $5DA6 ['] (ASCII) ['] an.RTS - - NEGATE
- code.ptr $5DA6 + W!
-
- ( install the code for (DUMP) )
- $5DB2 ['] (DUMP) ['] an.RTS - - NEGATE
- code.ptr $5DB2 + W!
-
- ( install the code for (.S) )
- $5DAC ['] (.S) ['] an.RTS - - NEGATE
- code.ptr $5DAC + W!
-
- ( install the code for (WORDS) )
- $5E06 ['] (WORDS) ['] an.RTS - - NEGATE
- code.ptr $5E06 + W!
-
- ( install the codes for word5 )
- $5BDA ['] word5 ['] an.RTS - - NEGATE
- code.ptr $5BDA + W!
- $5CCC ['] word5 ['] an.RTS - - NEGATE
- code.ptr $5CCC + W!
-
- ( install the codes for word6 )
- $5D6C ['] word6 ['] an.RTS - - NEGATE
- code.ptr $5D6C + W!
- $5D8C ['] word6 ['] an.RTS - - NEGATE
- code.ptr $5D8C + W!
-
- ( install the codes for (ASSEMBLER_TRAP) )
- $5DC4 ['] (ASSEMBLER_TRAP) ['] an.RTS - - NEGATE
- code.ptr $5DC4 + W!
-
- ( install the codes for (TRAP#) )
- $5D94 ['] (TRAP#) ['] an.RTS - - NEGATE
- code.ptr $5D94 + W!
-
- ( install the codes for do.CALL )
- $5DCA ['] do.CALL ['] an.RTS - - NEGATE
- code.ptr $5DCA + W!
-
- ( install the codes for do.(CALL) )
- $5DD0 ['] do.(CALL) ['] an.RTS - - NEGATE
- code.ptr $5DD0 + W!
-
- ( install the codes for (TRAPNAME) )
- $5DA0 ['] (TRAPNAME) ['] an.RTS - - NEGATE
- code.ptr $5DA0 + W!
-
- ( install the codes for (DsTrapName) )
- $5E00 ['] (DsTrapName) ['] an.RTS - - NEGATE
- code.ptr $5E00 + W!
-
- ( install the codes for (TRAPLIST) )
- $5D9A ['] (TRAPLIST) ['] an.RTS - - NEGATE
- code.ptr $5D9A + W!
-
- resHandle CALL ChangedResource
- resRefNum CALL UpdateResFile
- resRefNum CALL CloseResFile
- THEN
- THEN
- ;
-
-